//
// Created by liuyu on 2024/6/5.
//

#include <stm32f1xx_hal.h>
#include <tim.h>
#include <stdbool.h>
#include <memory.h>
#include "rgb.h"

/**
 * 设置RGB颜色
 * @param rPWM ： 红色的配比  0-4999
 * @param gPWM ： 绿色的配比  0-4999
 * @param bPWM ： 蓝色的配比  0-4999
 */
void setRGBColor(uint32_t rPWM,uint32_t gPWM,uint32_t bPWM)
{
    setPWMPulse(&htim2,TIM_CHANNEL_2,rPWM);

    setPWMPulse(&htim3,TIM_CHANNEL_1,bPWM);

    setPWMPulse(&htim3,TIM_CHANNEL_2,gPWM);
}

/**
 * 呼吸灯循环执行
 */
void breathingLamp(void)
{
    static uint32_t count=0;
    static bool flag=true;
    if (flag){
        count=count+6;
    } else{
        count=count-6;
    }
    if (4500==count)
    {
        flag=false;
    }
    if (0==count)
    {
        flag=true;
    }
    HAL_Delay(1);
    setRGBColor(count,count,count);
}

/**
 * 打开呼吸灯
 */
void onBreathingLamp(void)
{
    st_LoopFunc_t loopFunc;
    loopFunc.func=breathingLamp;
    strcpy(loopFunc.funcName,"breathingLamp");
    registerLoopCallBack(loopFunc);
}

/**
 * 关闭呼吸灯
 */
void offBreathingLamp(void)
{
    unRegisterLoopCallBack("breathingLamp");
}

/**
 * 初始化rgb
 */
void rgbInit(void)
{
    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
    HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);
    HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
}


